package net.servir.capacidades.web.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.servir.capacidades.model.*;
import net.servir.capacidades.util.*;
import net.servir.capacidades.model.jsp.JspBaseServir;
import net.servir.capacidades.service.CapacidadesService;
import net.servir.capacidades.service.SeguridadService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class ConfirmarController {

	@Autowired
	private CapacidadesService capacidadesService;

	@Autowired
	private SeguridadService seguridadService;

	@RequestMapping(value = "/confirmar.htm", method = RequestMethod.GET)
	public String base(Model model,
			@RequestParam(value = "token", required = true) String dni,
			HttpServletRequest request, HttpServletResponse response) {
		Integer ok;
		ResponsableIdentificacion responsable = null;
		ServicioCivil servicioCivil = null;
		Persona persona = null;
		Utilitarios util = new Utilitarios();
		// 01234567890123456789012345678
		// 60121971441060956403433035840
		System.out.println(dni.substring(17, 19));
		System.out.println(dni.substring(5, 7));
		System.out.println(dni.substring(22, 24));
		System.out.println(dni.substring(10, 12));

		if (!util.MD5(dni.substring(0, 29)).equals(dni.substring(29))) {
			return "dummy";
		} else {

			dni = dni.substring(17, 19) + dni.substring(5, 7)
					+ dni.substring(22, 24) + dni.substring(10, 12);
			System.out.println(dni);
			persona = capacidadesService.GetPersona(dni);
			if (persona == null) {
				return "dummy";
			} else {
				servicioCivil = capacidadesService.ObtenerServicioCivilPorDNI(
						dni, persona.getId_persona(), 1);
				if (servicioCivil == null) {
					return "dummy";
				} else {
					responsable = capacidadesService
							.GetResponsableIdentificacion(servicioCivil
									.getDniResponsableEntidad());
					if (responsable == null) {
						return "dummy";
					} else {
						if (capacidadesService.getFlagVisualizoCorreo(dni)
								.equals(1)) {
							ok = 0;
						} else {
							capacidadesService.setFlagVisualizoCorreo(dni);
							ok = 1;
						}
						model.addAttribute("dni", dni);
						model.addAttribute("ok", ok);
						model.addAttribute(
								"operador",
								persona.getApellido_paterno() + " "
										+ persona.getApellido_materno() + ", "
										+ persona.getNombres());
						model.addAttribute("serviciocivil",
								persona.getNombreCompleto());
						model.addAttribute("entidad",
								responsable.getDescripcion());
						return "confirmar";
					}
				}
			}
		}
	}
}
